// todo: 颜色工具类，处理颜色操作，如转换、生成等。
import 'dart:math';
import 'package:flutter/material.dart';

class ColorUtils {
  // 主色
  static const int _rawColor = 0xffc8161d;

  static const Color primaryColor = Color(_rawColor);

  // 基于Material Design的颜色方案
  static ColorScheme get colorScheme {
    return const ColorScheme(
      primary: Color(_rawColor),
      secondary: Colors.amber,
      surface: Colors.white,
      error: Colors.redAccent,
      onPrimary: Colors.white,
      onSecondary: Colors.black,
      onSurface: Colors.black,
      onError: Colors.white,
      brightness: Brightness.light,
    );
  }

  // 将十六进制颜色字符串转换为 Color 对象，将类似 #FF5733 这样的颜色值转换为 Flutter 的 Color 对象
  static Color fromHex(String hex) {
    final hexCode = hex.replaceAll('#', '');
    return Color(int.parse('FF$hexCode', radix: 16));
  }

  // 先移除颜色字符串中的 # 符号，然后使用 int.parse 函数将十六进制字符串转换为整数，最后使用 Color 构造函数将整数转换为 Color 对象。
  static String toHex(Color color, {bool leadingHashSign = true}) {
    return '${leadingHashSign ? '#' : ''}'
        '${color.alpha.toRadixString(16).padLeft(2, '0')}'
        '${color.red.toRadixString(16).padLeft(2, '0')}'
        '${color.green.toRadixString(16).padLeft(2, '0')}'
        '${color.blue.toRadixString(16).padLeft(2, '0')}';
  }

  static Color randomColor() {
    return Color((Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0);
  }
}
